CHR関数と式トランスフォーメーションで改行コードを挟んで文字列を結合する
データアナリティクス事業本部の鈴木です。
Informatica Intelligent Cloud Services(以降、IICS)のInformatica Cloud Data Integration(以降、CDI)でCSVファイルを処理する際、式トランスフォーメーションの機能を使って文字列の入ったカラム同士を改行コードを挟んで結合できるか確認しました。
この記事の目的
特殊なケースではありますが、CSVファイルで、説明書きが入っているカラムだと、改行が入っていることがあります。例えば、エクセルでファイル作成・中身を確認するようなユースケースです。CDIでもカラムの値に改行が入ったファイルを作成することができましたが、CHR関数を使って改行コードを指定する必要があったので記事にしました。
構成とデータについて
構成は以下のようにします。入力用バケットにsample.csv
を置いておき、CDIで加工した後、出力用バケットにoutput.csv
として出力します。
同様の構成は以下で扱いました。
データは以下のようなCSVファイルを準備しました。今回は2カラムをLF
を挟んで結合したものを新しいカラムとし(私の環境のExcelだとセル内改行はLF
だったので)、CSVファイルを出力としてS3に保存します。
text1,text2 "こんにちは","よろしくおねがいします。" "こんばんは","おつかれさまでした。"
参考にしたドキュメント
式トランスフォーメーションの日本語版のドキュメントは以下です。
英語版のドキュメントは以下です。
CHR
関数のドキュメントは以下になります。CHR
関数は文字コードを渡すことにより、その文字コードに対応した文字を返却します。
CHR
関数に渡す文字コードは、Data Integration ServiceでASCIIモードを使っているか、Unicodeモードを使っているかによって異なることに注意が必要なようです。
やってみる
1. マッピングの作成
データ統合
の、マッピングを作成したい場所で、新規
> マッピング
> マッピング
を押して、マッピングを新規作成します。
今回はS3にあるCSVファイルを取得して、式トランスフォーメーションで加工し、同じくS3に出力するようにしたいので、ソーストランスフォーメーションとターゲットトランスフォーメーションをそのように設定しておきます。
S3への接続については、以下の記事も参考になります。
2. 式トランスフォーメーションの設定
ソーストランスフォーメーションとターゲットトランスフォーメーションの間に、式トランスフォーメーションをドラッグ&ドロップします。
式トランスフォーメーションをクリックし、プロパティ
> 式
のプラスマークを押します。
新しいフィールド
に設定を記載します。特にフィールドタイプは出力フィールド
を設定しました。
次に式の内容を設定します。
文字列の結合には||
、LF
にはCHR(13)
を使いました。
3. ターゲットの設定
ターゲットトランスフォーメーションの設定を修正しておきました。受信フィールドで、式トランスフォーメーションで作成した出力フィールドのみ受信するように再設定しておきます。
今回は実際にエクセルで開くと改行されているか分かりやすかったので、文字化けしないよう、出力の文字コードをShift-JIS
にしておきました。これはターゲット
> 形式オプション
> コードページ
で設定しました。
ターゲットフィールドに設定が反映されていない場合は、再読み込みしておきます。
4. 実行結果の確認
作成したマッピングを実行し、結果を確認しました。変更を保存したことを確認して、マッピングの画面から、実行
を押して実行します。
S3の該当の場所にCSVファイルが作成できました。
ダウンロードしてエクセルで開くと、確かに改行されていることが確認できました。
最後に
今回はCDIの式トランスフォーメーションの機能を使って、CSVファイルの文字列の入ったカラム同士を改行コードを挟んで新しいカラムとし、S3の別のCSVファイルに出力する例をご紹介しました。参考になりましたら幸いです。